package demo06

/**
 * @author xiaoZhao
 * @date 2022/7/11
 * @describe 不可变的List
 *    sealed : 密封类 提供了一个约束，打包密封在当前文件内，当前类的子类不能定义在文件之外
 */
object Test04_List {
  def main(args: Array[String]): Unit = {
    // 1.创建一个List
    val list = List(10, 21, 90)
    println(list)

    // 访问元素
    println(list(1))

    // 遍历元素
    list.foreach(println)

    // 添加元素
    val list2 = list.+:(10)
    val list3 = list :+ 20
    println(list)
    println(list2)
    println(list3)

    val list4 = list2.::(23)
    println(list4)

    val list5 =Nil.::(16)
    println(list5)

    // 向列表头部添加元素
    val list6 = 34 :: Nil

    // 相当于定义一个列表
    val list7 = 29 :: 99 :: 80 :: 43 :: Nil
    println(list7)

    // 两个合并列表
    // 将list6整个列表合并到list7   List(List(34), 29, 99, 80, 43)
    val list8 = list6 :: list7
    println(list8)
    // 将list6中的各个元素合并到list7  List(34, 29, 99, 80, 43)
    // 扁平化
    val list9 = list6 ::: list7
    println(list9)
    // 底层调用 :::
    val list10 = list6 ++ list7
    println(list10)
  }
}
